package com.shiro.distribution;

import java.io.Serializable;
import java.util.Collection;
import java.util.Set;

/**
 * 功能或描述：缓存DAO
 *
 * @Package com.shiro.distribution
 * @Author: DR.YangLong
 * @Date: 14-9-30
 * @Time: 上午10:06
 * @Email: 410357434@163.com
 * @Version: 1.0
 * @Module: 修正:            日期：
 */
public interface DistributeCacheRpository<K, V> {
    /**
     * 获取缓存的值
     *
     * @param key key
     * @return 值
     */
    public V get(K key);

    /**
     * 新增或更新缓存
     *
     * @param key   key
     * @param value 值
     * @return 值
     */
    public V add(K key, V value);

    /**
     * 删除缓存
     *
     * @param key key
     * @return 删除的缓存
     */
    public V delete(K key);

    /**
     * 清除所有缓存
     */
    public void clear();

    /**
     * 获取缓存的数量
     *
     * @return 缓存数量
     */
    public int getSize();

    /**
     * 获取所有缓存的KEY
     *
     * @return Keys
     */
    public Set<K> getKeys();

    /**
     * 获取缓存中的所有值
     *
     * @return 集合
     */
    public Collection<V> getValues();

    /**
     *
     * @param key key值
     * @return 新Key
     */
    public Serializable generateKey(Object key);
}
